#pragma once
#include <functional>
#include <memory>
class Buffer;
class TcpConnection;
class Timestamp;
using TcpConnectionPtr=std::shared_ptr<TcpConnection>;
using ConnectionCallback=std::function<void(const TcpConnectionPtr&)>;
using CloseCallback=std::function<void(const TcpConnectionPtr&)>;
using WriteCompleteCallback =std::function<void(const TcpConnectionPtr&)>;

using MessageCallback=std::function<void(const TcpConnectionPtr&,Buffer*,Timestamp)>;
using HighWaterMarkCallback=std::function<void(const TcpConnectionPtr&,size_t)>;